package com.sun.designpatternsdemo.bridge

import android.os.Bundle
import com.sun.designpatternsdemo.R
import com.sun.designpatternsdemo.app.AppConstant
import com.sun.designpatternsdemo.app.EMTagHandler
import com.sun.designpatternsdemo.base.BaseActivity
import com.sun.designpatternsdemo.bridge.bean.Circle
import com.sun.designpatternsdemo.bridge.bean.GreenCircle
import com.sun.designpatternsdemo.bridge.bean.RedCircle
import com.sun.designpatternsdemo.databinding.ActivityBridgeBinding

/**
 * 版权：xx公司 版权所有
 * @author sun
 * 版本：1.0
 * 创建日期：${DATE} ${TIME}
 * 描述：${DATA}
 *桥接（Bridge）是用于把抽象化与实现化解耦，使得二者可以独立变化。
 * 这种类型的设计模式属于结构型模式，它通过提供抽象化和实现化之间的桥接结构，来实现二者的解耦。
 * <p>
 * 这种模式涉及到一个作为桥接的接口[DrawAPI]，使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。

 */
class BridgeActivity : BaseActivity<ActivityBridgeBinding>() {

    override fun layoutId(): Int = R.layout.activity_bridge

    override fun initView(savedInstanceState: Bundle?) {
        title = "桥接模式"
        mDataBind.apply {
            tvDefine.text = EMTagHandler.fromHtml(AppConstant.BRIDGE_DEFINE)
            btRed.setOnClickListener {
                //画红圆
                val circle = Circle(drawAPI = RedCircle(), x = 10, y = 10, radius = 100)
                circle.draw()
            }
            btGreen.setOnClickListener {
                //画绿圆
                val circle = Circle(drawAPI = GreenCircle(), x = 20, y = 20, radius = 100)
                circle.draw()
            }
        }
    }
}